#!/bin/bash

# 快速修复和测试脚本
echo "🔧 快速修复GC问题并测试"
echo "========================"

cd "$(dirname "$0")/.."

# 设置GC优化环境变量
echo "📝 设置GC优化参数..."
export CANGJIE_GC_HEAP_SIZE=256m
export CANGJIE_GC_MAX_HEAP_SIZE=512m
export CANGJIE_GC_CONCURRENT=true
export CANGJIE_GC_PARALLEL=true
export CANGJIE_GC_STW_TIMEOUT=10000
export CANGJIE_TEST_THREADS=1

echo "✅ GC参数设置完成"

# 构建项目
echo ""
echo "🔨 构建项目..."
if cjpm build; then
    echo "✅ 构建成功"
else
    echo "❌ 构建失败"
    exit 1
fi

# 运行最小化测试
echo ""
echo "🧪 运行最小化测试（60秒超时）..."
if timeout 60s cjpm test --filter MinimalDiagnosticTest 2>&1; then
    echo "✅ 最小化测试通过"
    TEST_RESULT="PASSED"
else
    echo "❌ 最小化测试失败或超时"
    TEST_RESULT="FAILED"
fi

# 生成简单报告
echo ""
echo "📋 测试结果报告"
echo "================"
echo "时间: $(date)"
echo "测试结果: $TEST_RESULT"
echo "GC配置: 堆大小=${CANGJIE_GC_HEAP_SIZE}, 最大堆=${CANGJIE_GC_MAX_HEAP_SIZE}"
echo "STW超时: ${CANGJIE_GC_STW_TIMEOUT}ms"

if [ "$TEST_RESULT" = "PASSED" ]; then
    echo ""
    echo "🎉 修复成功！测试可以正常运行了。"
    echo ""
    echo "💡 使用建议:"
    echo "  1. 在每次测试前设置这些环境变量"
    echo "  2. 如果仍有问题，可以尝试更大的超时值"
    echo "  3. 对于大型测试，建议分批执行"
else
    echo ""
    echo "⚠️ 修复可能不完全，建议:"
    echo "  1. 检查是否有其他进程占用资源"
    echo "  2. 尝试重启终端重新运行"
    echo "  3. 考虑使用更保守的GC参数"
fi
